package sf.database.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 列扩展信息:<br>
 * 1.给出字段的更加精确的数据库类型描述<br>
 * 2.  逻辑删除标记,如果有此标记，那么内置删除语句deleteById 将变成update语句，并设置属性为的值<br/>
 * 此注解仅用于在logicDeleteXXX内置操作中使用update方式，此注解不影响任何查询语句
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@Documented
public @interface ColumnInfo {
    /**
     * 是否为无符号数值,默认为false
     */
    boolean unsigned() default false;

    /**
     * 默认值,直接添加到 default 后面
     * @return
     */
    String defaultVale() default "";

    /**
     * 是否是逻辑删除字段
     * @return
     */
    boolean logicDelete() default false;

    /**
     * 逻辑删除的值
     */
    String logicDeletedValue() default "";

    /**
     * 未删除的值
     * @return
     */
    String NotLogicDeletedValue() default "";
}
